# Layerup安全

[Layerup安全](https://uselayerup.com)集成允许您保护对任何LangChain LLM、LLM链或LLM代理的调用。LLM对象包裹在任何现有的LLM对象周围，为您的用户和LLMs之间提供一个安全层。

虽然Layerup安全对象被设计为一个LLM，但实际上它本身并不是一个LLM，它只是包裹在一个LLM周围，使其能够适应底层LLM相同的功能。

## 设置

首先，您需要从Layerup的[网站](https://uselayerup.com)上获取一个Layerup安全账户。

接下来，通过[仪表板](https://dashboard.uselayerup.com)创建一个项目，并复制您的API密钥。我们建议将API密钥放在项目的环境中。

安装Layerup安全SDK：

```bash
pip install LayerupSecurity
```

然后安装LangChain Community：

```bash
pip install langchain-community
```

现在，您已经准备好开始用Layerup安全保护您的LLM调用了！

```python
from langchain_community.llms.layerup_security import LayerupSecurity
from langchain_openai import OpenAI
# 创建您喜爱的LLM的实例
openai = OpenAI(
    model_name="gpt-3.5-turbo",
    openai_api_key="OPENAI_API_KEY",
)
# 配置Layerup安全
layerup_security = LayerupSecurity(
    # 指定Layerup安全将包裹的LLM
    llm=openai,
    # Layerup仪表板上的Layerup API密钥
    layerup_api_key="LAYERUP_API_KEY",
    # 自定义基本URL，如果是自托管
    layerup_api_base_url="https://api.uselayerup.com/v1",
    # 在LLM被调用之前运行的提示栏
    prompt_guardrails=[],
    # 在LLM响应中运行的栏
    response_guardrails=["layerup.hallucination"],
    # 是否在将提示发送给LLM之前掩盖PII和敏感数据
    mask=False,
    # 用于滥用跟踪、客户跟踪和范围跟踪的元数据
    metadata={"customer": "example@uselayerup.com"},
    # 处理提示栏违规的处理程序
    handle_prompt_guardrail_violation=(
        lambda violation: {
            "role": "assistant",
            "content": (
                "有敏感数据！我无法回复。"
                "这是一个动态的预定义回复。当前日期：{}"
            ).format(datetime.now())
        }
        if violation["offending_guardrail"] == "layerup.sensitive_data"
        else None
    ),
    # 处理响应栏违规的处理程序
    handle_response_guardrail_violation=(
        lambda violation: {
            "role": "assistant",
            "content": (
                "带有动态数据的自定义预定义回复！"
                "违规规则是{}。"
            ).format(violation["offending_guardrail"])
        }
    ),
)
response = layerup_security.invoke(
    "总结这条消息：我的名字是鲍勃·迪伦。我的社会安全号码是123-45-6789。"
)
```